// 引入 Koa 包，创建 web 实例
const Koa = require("koa");

// 引入 koa-router 包，定义后端路由
const KoaRouter = require("koa-router");

// 引入 koa-bodyparser 包，解析请求体
const bodyparser = require("koa-bodyparser");

// 加载执行 SQL 语句的方法
const { query } = require("./mysql");

// 创建 Koa web 实例
const app = new Koa();

// 创建 KoaRouter 实例
const router = new KoaRouter();

// 启用 koa-bodyparser 中间件
app.use(bodyparser());

// 添加接口，使用 POST 请求，也就是使用 router.post() 方法去定义
router.post("/users", async (ctx) => {
    ctx.body = "添加用户接口";
    // 接收参数
    const { username, password, email, nickname } = ctx.request.body;
    // 非空验证
    if (!username || !password || !email || !nickname) {
        ctx.body = "参数不全";
        return;
    }
    // 邮箱校验 531804271@qq.com
    if (!/^\w+@[a-z0-9]+\.com$/.test(email)) {
        ctx.body = "邮箱格式不正确";
        return;
    }
    // 先查询数据库，看看是不是已经存在了该用户
    const res = await query("select * from user where username = ?", [
        username,
    ]);

    console.log("res", res);

    // 返回响应
    ctx.body = res;
});

// 查询接口，使用 GET 请求，也就是使用 router.get() 方法去定义
router.get("/users", async (ctx) => {
    ctx.body = "查询用户列表接口";
});

// 修改接口，使用 GET 请求，也就是使用 router.put() 方法去定义
router.put("/users", async (ctx) => {
    ctx.body = "修改用户信息接口";
});

// 删除接口，使用 GET 请求，也就是使用 router.delete() 方法去定义
router.delete("/users", async (ctx) => {
    ctx.body = "删除用户接口";
});

// 加载都 Koa 上
app.use(router.routes());

// 监听端口，启动服务
app.listen(9000, () => {
    console.log("Koa server running at http://localhost:9000");
});
